#include "head.h"
/* Usage:  */


// 初始化socket对象和IP地址与端口,用来三次握手
// 第一个参数：用于交流的socket_fd对象
// 第二个参数: 交互的端口
// 第三个参数：服务端的IP地址
int initSocket(int *socket_fd, char *port, char *ip)
{
    // 创建socket对象
    *socket_fd  = socket(AF_INET, SOCK_STREAM, 0);
    ERROR_CHECK(*socket_fd, -1, "socket");

    // 断线重连
    int reuse = 1;
    int res_ret = setsockopt(*socket_fd, SOL_SOCKET, SO_REUSEADDR, &reuse, sizeof(reuse));
    ERROR_CHECK(res_ret, -1, "setsockopt");

    // 创建struct sockaddr类型
    struct sockaddr_in sockaddr;
    sockaddr.sin_family = AF_INET;
    sockaddr.sin_port = htons(atoi(port));
    sockaddr.sin_addr.s_addr = inet_addr(ip);

    // 绑定端口
    int res_bind = bind(*socket_fd, (struct sockaddr*)&sockaddr, sizeof(sockaddr));
    ERROR_CHECK(res_bind, -1, "bind");

    // 监听
    int res_lis = listen(*socket_fd, 10);
    ERROR_CHECK(res_lis, -1, "listen");

    return 0;
}

